home *** CD-ROM | disk | FTP | other *** search
- CTRLZ EQU 26
- CR EQU 13
- LF EQU 10
- BS EQU 8
- TAB EQU 9
- BEL EQU 7
-
- ASSUME CS:MOREC,DS:MOREC,ES:MOREC,SS:MOREC
- MOREC SEGMENT PARA PUBLIC 'CODE'
-
- ORG 100H
- MORE: MOV AH,30H
- INT 21H
- XCHG AH,AL
- CMP AX,0200H ; DOS 2.00 ??
- JNB CONT
- MOV DX,OFFSET BADDOS
- MOV AH,09H ; PRINT STRING
- INT 21H
- INT 20H ; TERMINATE
-
- CONT: MOV BYTE PTR NUMROWS,25
- MOV AH,0FH
- INT 10H
- MOV NUMCOLS,AH
- MOV DX,OFFSET CRLF
- MOV AH,09H ; PRINT STRING
- INT 21H
- XOR BX,BX
- MOV AH,45H ; DUP HANDLE
- INT 21H
- MOV BP,AX
- MOV AH,3EH ; CLOSE HANDLE
- INT 21H
- MOV BX,2
- MOV AH,45H ; DUP HANDLE
- INT 21H
-
- NEXTBF: CLD
- MOV DX,OFFSET BUFFER
- MOV CX,4096
- MOV BX,BP
- MOV AH,3FH ; READ HANDLE
- INT 21H
- OR AX,AX
- JNZ GOTCH
- EXIT: INT 20H ; TERMINATE
- GOTCH: MOV CX,AX
- MOV SI,DX
- NEXTCH: LODSB
- CMP AL,CTRLZ
- JZ EXIT
- CMP AL,CR
- JNZ NOCR
- MOV BYTE PTR COLNUM,1
- JMP SHORT PRINTCH
- NOCR: CMP AL,LF
- JNZ NOLF
- INC ROWNUM
- JMP SHORT PRINTCH
- NOLF: CMP AL,BS
- JNZ NOBS
- CMP BYTE PTR COLNUM,1
- JZ PRINTCH
- DEC COLNUM
- JMP SHORT PRINTCH
- NOBS: CMP AL,TAB
- JNZ NOTAB
- MOV AH,COLNUM
- ADD AH,7
- AND AH,NOT 7
- INC AH
- MOV COLNUM,AH
- JMP SHORT PRINTCH
- NOTAB: CMP AL,BEL
- JZ PRINTCH
- INC COLNUM
- MOV AH,COLNUM
- CMP AH,NUMCOLS
- JBE PRINTCH
- INC ROWNUM
- MOV BYTE PTR COLNUM,1
- PRINTCH:MOV DL,AL
- MOV AH,02H ; PRINT CHAR
- INT 21H
- MOV AH,ROWNUM
- CMP AH,NUMROWS
- JB LOOPCH
- MOV DX,OFFSET MORSTR
- MOV AH,09H ; PRINT STRING
- INT 21H
- MOV AH,0CH ; CLEAR INPUT BUFFER AND
- MOV AL,01H ; KEYBOARD INPUT
- INT 21H
- MOV DX,OFFSET CRLF
- MOV AH,09H ; PRINT STRING
- INT 21H
- MOV BYTE PTR COLNUM,1
- MOV BYTE PTR ROWNUM,1
- DEC SI
- INC CX
- LOOPCH: DEC CX
- JZ LONGBF
- JMP NEXTCH
- LONGBF: JMP NEXTBF
-
- NUMROWS DB 24
- NUMCOLS DB 80
- ROWNUM DB 01
- COLNUM DB 01
- DB 00H,00H,00H,00H,00H
- MORSTR DB CR,"-- More --$"
- BADDOS DB "MORE: Incorrect DOS version"
- CRLF DB CR,LF,"$"
-
- BUFFER DB 102 DUP (0)
-
- MOREC ENDS
- END MORE